﻿using System;
using System.Collections.Generic;
using System.IO;
using System.Web;
using Rabbit.Logic;
using RabbitShop.Code;
using Raven.Imports.Newtonsoft.Json;

namespace RabbitShop.Action
{
    public partial class CartItemAdd : System.Web.UI.Page
    {
        protected void Page_Load(object sender, EventArgs e)
        {
            string uid = string.Empty;
            if (Request.Cookies[Constant.CookieName] != null)
            {
                uid = Request.Cookies[Constant.CookieName].Values[Constant.CookieUid];
                if (string.IsNullOrEmpty(uid)) Response.Redirect("~/UI/UserLogon.aspx");
            }
            else
            {
                Response.Redirect("~/UI/UserLogon.aspx");
            }


            Stream postData = Request.InputStream;
            StreamReader sRead = new StreamReader(postData);
            string postContent = sRead.ReadToEnd();
            sRead.Close();

            if (!string.IsNullOrEmpty(postContent))
            {
                try
                {
                    ShopCartItem item = JsonConvert.DeserializeObject<ShopCartItem>(postContent);

                    Customer customer = RabbitUse.GetCustomerById(Db.Store, uid);
                    if (customer.Cart == null)
                    {
                        customer.Cart = new List<ShopCartItem>();
                    }
                    bool isExist = false;
                    for (int i = 0; i < customer.Cart.Count; i++)
                    {
                        if (customer.Cart[i].ProductId == item.ProductId)
                        {
                            customer.Cart[i].Quantity += item.Quantity;
                            isExist = true;
                            break;
                        }
                    }
                    if (!isExist)
                    {
                        customer.Cart.Add(item);
                    }
                    RabbitUse.AddOrUpdateCustomer(Db.Store, customer);

                    Logic.UpdateCookieCartNo(this, customer.Cart.Count.ToString());

                    Response.Write("true");
                }
                catch (Exception ex)
                {
                    Response.Write(ex.Message);
                }

            }
            else
            {
                Response.Write("false");
            }
        }
    }
}